home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
usenet
/
sources
/
volume89
/
intuitin
/
msizer.1
< prev
next >
Wrap
Text File
|
1989-11-13
|
32KB
|
962 lines
Path: xanth!mcnc!rutgers!usc!brutus.cs.uiuc.edu!wuarchive!texbell!texsun!newstop!sun!swap!page
From: page%swap@Sun.COM (Bob Page)
Newsgroups: comp.sources.amiga
Subject: v89i197: msizer - size a window from any corner (like sunview)
Message-ID: <127765@sun.Eng.Sun.COM>
Date: 13 Nov 89 01:24:28 GMT
Sender: news@sun.Eng.Sun.COM
Lines: 951
Approved: page@sun.com
Submitted-by: giampal@auvm.bitnet
Posting-number: Volume 89, Issue 197
Archive-name: intuition/msizer.1
Msizer allows you to resize a window from any corner when holding down
the left mouse button and the left amiga key.
[uuencoded executable included. This would make a good Commodities
Exchange demo. ..bob]
# This is a shell archive.
# Remove anything above and including the cut line.
# Then run the rest of the file through 'sh'.
# Unpacked files will be owned by you and have default permissions.
#----cut here-----cut here-----cut here-----cut here----#
#!/bin/sh
# shar: SHell ARchive
# Run the following text through 'sh' to create:
# MSizer.c
# MSizer.doc
# MSizer.uu
# This is archive 1 of a 1-part kit.
# This archive created: Sun Nov 12 17:19:14 1989
echo "extracting MSizer.c"
sed 's/^X//' << \SHAR_EOF > MSizer.c
X/*
X Keeping to tradition, the Khaled Mardam-Bey philosophy, this program
X is completely undocumented so as to give you prime experience in
X learning how to debug source code.
X
X The program also contains many redundant bits and pieces so as to
X make your learning experience that much more profoundly educational
X and exceptional.
X
X This is how NOT to write a program.
X
X Got it ? Okay, great, now YOU can start teaching others by coding in
X exactly the same way.
X
X There's something very deep in that last sentence, can't quite
X pinpoint it though, hmmm...
X
X compile with cc Msizer.c
X ln Msizer.o -lc
X
X Warning - It won't bite unless you try to compile it.
X Linking is okay though... <grin>
X
X This source is totally PD.
X
X written by Khaled Mardam-Bey, 14th October 1989.
X*/
X
X#include <exec/lists.h>
X#include <exec/interrupts.h>
X#include <exec/ports.h>
X#include <exec/libraries.h>
X#include <exec/io.h>
X#include <exec/execbase.h>
X#include <exec/types.h>
X#include <exec/devices.h>
X#include <exec/memory.h>
X#include <exec/exec.h>
X#include <exec/ports.h>
X#include <exec/tasks.h>
X#include <libraries/dos.h>
X#include <libraries/dosextens.h>
X#include <devices/timer.h>
X#include <devices/trackdisk.h>
X#include <devices/input.h>
X#include <devices/inputevent.h>
X#include <intuition/intuition.h>
X#include <intuition/intuitionbase.h>
X#include <ctype.h>
X#include <stdio.h>
X#include <functions.h>
X#include <graphics/gfxbase.h>
X
X /* Key Definitions */
X#define QKEY 0x45
X#define CONTROL 0x63
X#define THRESHX 16
X#define THRESHY 8
X#define MINX 40
X#define MINY 24
X
X /* input events */
X#define QUIT 0x1
X#define FINISHUP 0x2
X#define MOVEIT 0x4
X#define DOWINDOW 0x8
X
X#define DELAY 1000000L
X
Xchar PortName[] = "PePeTe";
Xchar WrittenBy[] = "Khaled Mardam-Bey 1989";
X
XSHORT i,j,k,l;
XSHORT nomore = 0, NoGo = 0;
XSHORT corner = 0;
XSHORT dx,dy,ff,xx,yy,oo;
XSHORT DoIT = 0, there = 0;
XSHORT LastX,LastY;
XSHORT x,y,ox,oy,fx,fy;
XSHORT event;
XSHORT lastcode = 0;
Xlong sec = 0,micro = 0;
XSHORT rbuttonisdown = 0, lbuttonisdown = 0;
XSHORT ww, wh, te, le, sw, sh;
X
Xstruct Library *OpenLibrary();
Xstruct ViewPort *ViewPortAddress();
X
Xstruct MsgPort *inputPort = NULL;
Xstruct IOStdReq *inputReq = NULL;
Xstruct MsgPort *TimerPort = NULL;
Xstruct Screen *s, *Screen = NULL;
Xstruct IntuitionBase *IntuitionBase = NULL;
Xstruct GfxBase *GfxBase = NULL;
Xstruct Window *window;
Xstruct RastPort *rp;
Xstruct Layer_Info *li;
Xstruct LayersBase *LayersBase = NULL;
X
Xvoid move(x,y) SHORT x,y; { Move(rp, (long) x, (long) y); }
Xvoid draw(x,y) SHORT x,y; { Draw(rp, (long) x, (long) y); }
Xvoid plot(x,y) SHORT x,y; { WritePixel(rp, (long) x, (long) y); }
X
Xstruct timerequest Timer_Req;
Xlong TimerSig,tdevice = 1;
X
Xstruct InputEvent phoney;
Xstruct HotInfo
X {
X struct Task *hotTask;
X long hotSig;
X } hotStuff;
X
Xlong signum = -1;
X
Xstruct Interrupt handlerStuff;
Xstruct defPort
X{
X struct MsgPort mp;
X};
X
Xstruct defPort *defPortPtr;
Xchar defPortName[] = "WiNnYpO";
XSHORT updating = 0;
X
Xvoid HandlerInterface()
X{
X#asm
X movem.l a4,-(sp)
X jsr _geta4#
X movem.l A0/A1,-(sp)
X jsr _myhandler
X addq.l #8,A7
X movem.l (sp)+,a4
X#endasm
X}
X
Xstruct InputEvent *myhandler(ev1, hotStuff)
Xstruct InputEvent *ev1;
Xstruct HotInfo *hotStuff;
X{
X struct InputEvent *ev, *last;
X SHORT removeit;
X SHORT evcode,evqual;
X
X event = 0;
X for (ev=ev1,last = NULL; ev; ev=ev->ie_NextEvent)
X {
X evcode = ev->ie_Code;
X evqual = ev->ie_Qualifier;
X removeit = 0;
X
X if ((ev->ie_Class != IECLASS_TIMER))
X {
X if (ev->ie_Class == IECLASS_RAWKEY)
X {
X if ((evcode >= 0x80) && (evcode == (lastcode | 0x80))) {
X DoIT = 0;
X event |= FINISHUP;
X removeit = 1;
X lastcode = 0; }
X else {
X lastcode = 0;
X removeit = 0;
X }
X
X if (evcode == CONTROL)
X {
X lastcode = evcode;
X removeit = 1;
X DoIT = 1;
X }
X else
X if (evcode == QKEY) {
X if (DoIT) DoIT = 2;
X lastcode = evcode;
X removeit = 1;
X }
X else DoIT = 0;
X }
X }
X
X if (ev->ie_Class == IECLASS_RAWMOUSE)
X {
X if (evcode == (IECODE_LBUTTON | 0x80)) {
X lbuttonisdown = 0;
X if (DoIT) event |= DOWINDOW;
X else event |= FINISHUP;
X }
X else {
X if (evcode == IECODE_LBUTTON) {
X if (DoIT == 2) event |= QUIT;
X if ((lbuttonisdown == 0) && (DoIT == 1)) removeit = 1;
X lbuttonisdown = 1;
X }
X
X if ((lbuttonisdown) && (DoIT)) {
X event |= MOVEIT;
X }
X }
X }
X
X if (removeit)
X if (last == NULL)
X ev1 = ev->ie_NextEvent;
X else
X last->ie_NextEvent = ev->ie_NextEvent;
X else
X last = ev;
X }
X
X if (event)
X Signal(hotStuff->hotTask,hotStuff->hotSig);
X return(ev1);
X}
X
Xmain()
X{
X struct IntuiMessage *Msg;
X long class;
X
X IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0L);
X if (!IntuitionBase) exit(0L);
X
X GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0L);
X if (!GfxBase) exit(0L);
X
X LayersBase = (struct LayersBase *) OpenLibrary("layers.library",0L);
X if (!LayersBase) exit(0L);
X
X defPortPtr = (struct defPort *) FindPort(defPortName);
X if (defPortPtr == NULL)
X {
X if ((defPortPtr = (struct defPort *) AllocMem((long)sizeof(struct defPort),MEMF_PUBLIC | MEMF_CLEAR)) == NULL)
X exit(10);
X }
X else
X updating = 1;
X
X if (updating)
X Uninstall();
X
X defPortPtr->mp.mp_Node.ln_Pri = 0;
X defPortPtr->mp.mp_Node.ln_Type = NT_MSGPORT;
X NewList(&(defPortPtr->mp.mp_MsgList));
X defPortPtr->mp.mp_Node.ln_Name = (char *) &(defPortName);
X
X AddPort(defPortPtr);
X
X if((signum = AllocSignal((long)-1)) == -1)
X Uninstall();
X
X hotStuff.hotSig = 1 << signum;
X hotStuff.hotTask = FindTask(NULL);
X
X if(!(inputPort = CreatePort(PortName,0)))
X Uninstall();
X if(!(inputReq = CreateStdIO(inputPort)))
X Uninstall();
X
X handlerStuff.is_Data = (APTR)&hotStuff;
X handlerStuff.is_Code = HandlerInterface;
X handlerStuff.is_Node.ln_Pri = 55;
X handlerStuff.is_Node.ln_Name = "PoOpHaNy";
X
X if(OpenDevice("input.device",0L,inputReq,0L) != 0)
X Uninstall();
X
X inputReq->io_Command = IND_ADDHANDLER;
X inputReq->io_Data = (APTR)&handlerStuff;
X
X DoIO(inputReq);
X
X if ((TimerPort = CreatePort("TimPodle", 0L)) == NULL)
X Uninstall();
X
X if ((tdevice = OpenDevice(TIMERNAME, UNIT_VBLANK, &Timer_Req, 0L)) != 0)
X Uninstall();
X Timer_Req.tr_node.io_Message.mn_ReplyPort = TimerPort;
X Timer_Req.tr_node.io_Command = TR_ADDREQUEST;
X Timer_Req.tr_node.io_Flags = 0;
X Timer_Req.tr_node.io_Error = 0;
X
X TimerSig = (1L << TimerPort->mp_SigBit);
X
X QueTimer();
X
X (void)SetTaskPri(FindTask(NULL), 20L);
X
X for (;;)
X {
X Wait(hotStuff.hotSig | TimerSig);
X
X if (Msg = (struct IntuiMessage *)GetMsg(TimerPort))
X if (Msg) QueTimer();
X
X if (breakcheck()) Uninstall();
X breakreset();
X
X if (event & QUIT) Uninstall();
X
X if (event & FINISHUP) {
X FiniUpi();
X corner = 0;
X nomore = 0;
X }
X
X if (event & DOWINDOW) MoveThatWindow();
X
X if (event & MOVEIT) {
X if (nomore == 0) CheckPP();
X else if (corner != 0) ElBorders();
X }
X event = 0;
X }
X}
X
XFiniUpi()
X{
X if (there) {
X xx = LastX + dx; yy = LastY + dy;
X DoEm();
X UnlockLayers(li);
X there = 0;
X }
X}
X
XQueTimer()
X{
X Timer_Req.tr_time.tv_secs = 0;
X Timer_Req.tr_time.tv_micro = DELAY;
X SendIO(&Timer_Req.tr_node);
X}
X
XElBorders()
X{
X if ((LastX != s->MouseX) || (LastY != s->MouseY)) {
X xx = LastX + dx;
X yy = LastY + dy;
X DoEm();
X xx = s->MouseX + dx;
X yy = s->MouseY + dy;
X DoEm();
X }
X
X there = 1;
X LastX = s->MouseX;
X LastY = s->MouseY;
X}
X
XDoEm()
X{
X if (corner == 1) do1();
X else if (corner == 2) do2();
X else if (corner == 3) do3();
X else if (corner == 4) do4();
X}
X
Xdo1()
X{
X while (xx < 0) xx = xx + 1;
X while (yy < 0) yy = yy + 1;
X
X while ((le+ww) > s->Width) ww = ww -1;
X while ((te+wh) > s->Height) wh = wh - 1;
X
X if (xx > (le+ww-MINX)) xx = (le+ww-MINX);
X if (yy > (te+wh-MINY)) yy = (te+wh-MINY);
X
X move( (SHORT) xx, (SHORT) yy);
X draw( (SHORT) (le+ww-1), (SHORT) yy);
X draw( (SHORT) (le+ww-1), (SHORT) (te+wh-1));
X draw( (SHORT) xx, (SHORT) (te+wh-1));
X draw( (SHORT) xx, (SHORT) yy);
X}
X
Xdo2()
X{
X while (xx > s->Width) xx = xx - 1;
X while (xx < 0) xx = xx + 1;
X while (yy < 0) yy = yy + 1;
X while (yy > s->Height) yy = yy - 1;
X
X while ((te+wh) > s->Height) wh = wh - 1;
X
X if (xx < (le+MINX)) xx = le+MINX;
X if (yy > (te+wh-MINY)) yy = (te+wh-MINY);
X
X move( (SHORT) xx-1, (SHORT) yy);
X draw( (SHORT) le, (SHORT) yy);
X draw( (SHORT) le, (SHORT) (te+wh-1));
X draw( (SHORT) xx-1, (SHORT) (te+wh-1));
X draw( (SHORT) xx-1, (SHORT) yy);
X}
X
Xdo3()
X{
X while (xx < 0) xx = xx + 1;
X while (xx > s->Width) xx = xx - 1;
X while (yy < 0) yy = yy + 1;
X while (yy > s->Height) yy = yy - 1;
X
X while ((le+ww) > s->Width) ww = ww -1;
X
X if (xx > (le+ww-MINX)) xx = (le+ww-MINX);
X if (yy < (te+MINY)) yy = (te+MINY);
X
X move( (SHORT) xx, (SHORT) yy-1);
X draw( (SHORT) (le+ww-1), (SHORT) yy-1);
X draw( (SHORT) (le+ww-1), (SHORT) te);
X draw( (SHORT) xx, (SHORT) te);
X draw( (SHORT) xx, (SHORT) yy-1);
X}
X
Xdo4()
X{
X while (xx < 0) xx = xx + 1;
X while (xx > s->Width) xx = xx - 1;
X while (yy < 0) yy = yy + 1;
X while (yy > s->Height) yy = yy - 1;
X
X if (xx < (le+MINX)) xx = (le+MINX);
X if (yy < (te+MINY)) yy = (te+MINY);
X
X move( (SHORT) xx-1, (SHORT) yy-1);
X draw( (SHORT) xx-1, (SHORT) te);
X draw( (SHORT) le, (SHORT) te);
X draw( (SHORT) le, (SHORT) yy-1);
X draw( (SHORT) xx-1, (SHORT) yy-1);
X}
X
XCheckPP()
X{
X window = IntuitionBase->ActiveWindow;
X
X if (window != NULL) {
X le = window->LeftEdge; te = window->TopEdge;
X ww = window->Width; wh = window->Height;
X
X s = window->WScreen;
X sw = s->Width;
X sh = s->Height;
X
X rp=&(s->RastPort);
X
X SetAPen(rp,1L);
X SetBPen(rp,2L);
X SetDrMd(rp, COMPLEMENT | JAM1);
X
X LastX = ox = x = s->MouseX;
X LastY = oy = y = s->MouseY;
X
X corner = 0;
X
X if ((y >= te) && (y < (te + THRESHY))) { /* top edge */
X if ((x >= le) && (x < (le + THRESHX))) /* left */
X { corner = 1;
X dx = le - x;
X dy = te - y;
X }
X else
X if ((x <= (le + ww)) && (x > (le + ww - THRESHX))) /* right */
X { corner = 2;
X dx = (le+ww) - x;
X dy = te - y;
X }
X }
X else
X if ((y <= (te + wh)) && (y > (te + wh - THRESHY))) { /* bottom edge */
X if ((x >= le) && (x < (le + THRESHX))) /* left */
X { corner = 3;
X dx = le - x;
X dy = (te+wh) - y;
X }
X else
X if ((x <= (le + ww)) && (x > (le + ww - THRESHX))) /* right */
X { corner = 4;
X dx = (le+ww) - x;
X dy = (te+wh) - y;
X }
X }
X
X if (corner != 0) {
X LastX = x = s->MouseX;
X LastY = y = s->MouseY;
X li = &(s->LayerInfo);
X LockLayers(li);
X ox = xx = LastX + dx;
X oy = yy = LastY + dy;
X DoEm();
X nomore = 1;
X there = 1;
X }
X else nomore = 0;
X }
X}
X
XMoveThatWindow()
X{
X Forbid();
X Disable();
X
X FiniUpi();
X
X fx = xx;
X fy = yy;
X
X xx = fx - ox; if (xx < 0) xx = xx * -1;
X yy = fy - oy; if (yy < 0) yy = yy * -1;
X
X if (corner == 1) {
X if ((fx >= ox) && (fy >= oy)) {
X while (xx > (le+ww-MINX)) xx = xx - 1;
X while (yy > (te+wh-MINY)) yy = yy - 1;
X SizeWindow(window, (-1L * xx), (-1L * yy));
X MoveWindow(window, (1L * xx), (1L * yy));
X }
X else
X if ((fx <= ox) && (fy <= oy)) {
X while ((le-xx) < 0) xx = xx - 1;
X while ((te-yy) < 0) yy = yy - 1;
X MoveWindow(window, (-1L * xx), (-1L * yy));
X SizeWindow(window, (1L * xx), (1L * yy));
X }
X else
X if ((fx >= ox) && (fy <= oy)) {
X while (xx > (le+ww-MINX)) xx = xx - 1;
X while ((te-yy) < 0) yy = yy - 1;
X SizeWindow(window, (-1L * xx), 0L);
X MoveWindow(window, (1L * xx), (-1L * yy));
X SizeWindow(window, 0L, (1L * yy));
X }
X else
X if ((fx <= ox) && (fy >= oy)) {
X while (yy > (te+wh-MINY)) yy = yy - 1;
X while ((le-xx) < 0) xx = xx - 1;
X SizeWindow(window, 0L, (-1L * yy));
X MoveWindow(window, (-1L * xx), (1L * yy));
X SizeWindow(window, (1L * xx), 0L);
X }
X }
X else
X if (corner == 2) {
X if ((fx >= ox) && (fy >= oy)) {
X while (yy > (te+wh-MINY)) yy = yy - 1;
X while ((xx+le+ww) > s->Width) xx = xx - 1;
X SizeWindow(window, (1L * xx), (-1L * yy));
X MoveWindow(window, 0L, (1L * yy));
X }
X else
X if ((fx <= ox) && (fy <= oy)) {
X while ((te-yy) < 0) yy = yy - 1;
X MoveWindow(window, 0L , (-1L * yy));
X SizeWindow(window, (-1L * xx), (1L * yy));
X }
X else
X if ((fx >= ox) && (fy <= oy)) {
X while ((le+ww+xx) > s->Width) xx = xx - 1;
X while ((te-yy) < 0) yy = yy - 1;
X MoveWindow(window, 0L, (-1L * yy));
X SizeWindow(window, (1L * xx), (1L * yy));
X }
X else
X if ((fx <= ox) && (fy >= oy)) {
X while (yy > (te+wh-MINY)) yy = yy - 1;
X SizeWindow(window, (-1L * xx), (-1L * yy));
X MoveWindow(window, 0L, (1L * yy));
X }
X }
X else
X if (corner == 3) {
X if ((fx >= ox) && (fy >= oy)) {
X while (xx > (le+ww-MINX)) xx = xx - 1;
X while ((te+yy+wh) > s->Height) yy = yy - 1;
X SizeWindow(window, (-1L * xx), (1L * yy));
X MoveWindow(window, (1L * xx), 0L);
X }
X else
X if ((fx <= ox) && (fy <= oy)) {
X while ((le-xx) < 0) xx = xx - 1;
X while ((te+wh-yy) < MINY) yy = yy - 1;
X MoveWindow(window, (-1L * xx), 0L);
X SizeWindow(window, (1L * xx), (-1L * yy));
X }
X else
X if ((fx >= ox) && (fy <= oy)) {
X while ((te+wh-yy) < MINY) yy = yy - 1;
X while (xx > (le+ww-MINX)) xx = xx - 1;
X SizeWindow(window, (-1L * xx), (-1L * yy));
X MoveWindow(window, (1L * xx), 0L);
X }
X else
X if ((fx <= ox) && (fy >= oy)) {
X while ((le-xx) < 0) xx = xx - 1;
X while ((te+yy+wh) > s->Height) yy = yy - 1;
X MoveWindow(window, (-1L * xx), 0L);
X SizeWindow(window, (1L * xx), (1L * yy));
X }
X }
X else
X if (corner == 4) {
X if ((fx >= ox) && (fy >= oy)) {
X while ((te+yy+wh) > s->Height) yy = yy - 1;
X while ((xx+le+ww) > s->Width) xx = xx - 1;
X SizeWindow(window, (1L * xx), (1L * yy));
X }
X else
X if ((fx <= ox) && (fy <= oy)) {
X while (xx > (le+ww-MINX)) xx = xx - 1;
X while ((te+wh-yy) < MINY) yy = yy - 1;
X SizeWindow(window, (-1L * xx), (-1L * yy));
X }
X else
X if ((fx >= ox) && (fy <= oy)) {
X while ((le+ww+xx) > s->Width) xx = xx - 1;
X while ((te+wh-yy) < MINY) yy = yy - 1;
X SizeWindow(window, (1L * xx), (-1L * yy));
X }
X else
X if ((fx <= ox) && (fy >= oy)) {
X while (xx > (le+ww-MINX)) xx = xx - 1;
X while ((te+yy+wh) > s->Height) yy = yy - 1;
X SizeWindow(window, (-1L * xx), (1L * yy));
X }
X }
X Enable();
X Permit();
X nomore = corner = 0;
X}
X
Xbreakcheck()
X{
X if (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
X return (1);
X else
X return (0);
X}
X
Xbreakreset()
X{
X SetSignal(0L, SIGBREAKF_CTRL_C);
X}
X
XChk_Abort()
X{
X return(0);
X}
X
XUninstall()
X{
X if (!updating)
X {
X if (inputReq)
X {
X inputReq->io_Command = IND_REMHANDLER;
X inputReq->io_Data = (APTR)&handlerStuff;
X DoIO(inputReq);
X
X CloseDevice(inputReq);
X DeleteStdIO(inputReq);
X }
X
X if (inputPort) DeletePort(inputPort);
X if (signum > -1) FreeSignal(signum);
X
X if (tdevice == 0)
X {
X AbortIO(&Timer_Req.tr_node);
X CloseDevice(&Timer_Req);
X }
X
X if (TimerPort)
X DeletePort(TimerPort);
X
X if (defPortPtr)
X {
X if (defPortPtr->mp.mp_Node.ln_Name)
X RemPort(defPortPtr);
X FreeMem(defPortPtr,(long)sizeof(struct defPort));
X }
X }
X
X if (LayersBase)
X CloseLibrary(LayersBase);
X if (GfxBase)
X CloseLibrary(GfxBase);
X if (IntuitionBase)
X CloseLibrary(IntuitionBase);
X exit(0L);
X}
SHAR_EOF
echo "extracting MSizer.doc"
sed 's/^X//' << \SHAR_EOF > MSizer.doc
X============================================================================
XSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZE
X MADSIZER 14th October 1989
XMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADSIZERMADS
X============================================================================
X
X JUST WHEN YOU THOUGHT IT WAS SAFE...
X
X Howdy Folks, Yep.. I know it's hard to believe but I have actually
X come up with YAUP (Yet Another Useless Program). I was playing around on
X a sun machine and noticed you could resize windows from ANY corner of the
X window. HEY!! I thought to myself... <grin>
X
X So here you are, simple hack, no big deal to it.
X
X You can resize ANY window from ANY corner.
X
X Use the CONTROL KEY and the LEFT MOUSE BUTTON,
X point at a window corner and TADAAA!!!
X
X neat, huh ? <grin> thrilled me to bits...
X
X To exit the program, you can send it a CONTROL-C (using "break") or
X press CONTROL-ESC-LEFTMOUSEBUTTON (in that order) simultaneously.
X
X That's about it really. Jeeze. Sounded more exciting, hmmm ?
X Yeah well, that's why it's a YAUP, it's not exciting enough!!
X
X This program is totally PD, as is the source code.
X
X Enjoy...
X
X Khaled Mardam-Bey.
X
X============================================================================
SHAR_EOF
echo "extracting MSizer.uu"
sed 's/^X//' << \SHAR_EOF > MSizer.uu
X
Xbegin 644 MSizer
XM```#\P`````````#``````````(```?T0```64````$```/I```']$[Z%:Q..
XM50``,"T`"DC`+P`P+0`(2,`O`"\L@*Q.NA[\3^\`#$Y=3G5.50``,"T`"DC`"
XM+P`P+0`(2,`O`"\L@*Q.NA[&3^\`#$Y=3G5.50``,"T`"DC`+P`P+0`(2,`O3
XM`"\L@*Q.NA[V3^\`#$Y=3G5.50``+PQ.NA6H2.<`P&$(4(\H7TY=3G5.5?_R^
XM0FR`EBMM``C__$*M__A@``%*(&W__#MH``;_]"!M__P[:``(__)";?_V(&W_H
XM_`PH``8`!&<``(0@;?_\#"@``0`$9G8,;0"`__1M)#`L@"H(P``'L&W_]&86@
XM0FR`)@CL``&`ESM\``'_]D)L@"I@"$)L@"I";?_V#&T`8__T9A0Y;?_T@"H[0
XM?``!__8Y?``!@"9@)@QM`$7_]&8:2FR`)F<&.7P``H`F.6W_](`J.WP``?_V;
XM8`1";(`F(&W__`PH``(`!&9D#&T`Z/_T9AI";(`V2FR`)F<(".P``X"78`8(#
XM[``!@)=@0@QM`&C_]&8H#&P``H`F9@8([```@)=*;(`V9@X,;``!@"9F!CM\!
XM``'_]CE\``&`-DIL@#9G#$IL@"9G!@CL``*`ETIM__9G'$JM__AF"B!M__PK7
XM4``(8`H@;?_\(FW_^"*08`8K;?_\__@@;?_\*U#__$JM__QF`/ZR2FR`EF<4_
XM(&T`#"\H``0@;0`,+Q!.NAS<4$\@+0`(3EU.=4Y5__A"ITAZ`HQ.NAQB4$\I/
XM0(!(2JR`2&8(0J=.NA?Z6$]"ITAZ`H!.NAQ$4$\I0(!,2JR`3&8(0J=.NA?<:
XM6$]"ITAZ`G-.NAPF4$\I0(!02JR`4&8(0J=.NA>^6$](;(!<3KH;BEA/*4"!8
XM%$JL@11F(DAY``$``4AX`").NALX4$\I0($49@H_/``*3KH7BE1/8`8Y?``!A
XM@&1*;(!D9P1.NA($(&R!%$(H``D@;($4$7P`!``((&R!%$AH`!1.NAN&6$]!+
XM[(!<(FR!%"-(``HO+($43KH:(%A/2'C__TZZ&B)83RE`@%BPO/____]F!$ZZ]
XM$;1P`2(L@%CCH"E`@/I"ITZZ&O983RE`@/9"9TAL@`).NAD07$\I0(`X9@1.=
XMNA&&+RR`.$ZZ&>983RE`@#QF!$ZZ$7)![(#V*4B!#$'Z_2`I2($0&7P`-X$'[
XM0?H!>"E(@0A"IR\L@#Q"ITAZ`7%.NAKV3^\`$$J`9P1.NA$X(&R`/#%\``D`U
XM'$'L@/XB;(`\(T@`*"\L@#Q.NAI$6$]"ITAZ`4A.NAB,4$\I0(!`9@1.NA$"U
XM0J=(;("T2'@``4AZ`3-.NAJB3^\`$"E`@%1G!$ZZ$.(I;(!`@,(Y?``)@-!"C
XM+(#20BR`TR!L@$!P`!`H``]R`>&A*4&`W$ZZ`3Q(>``40J=.NAH"6$\O`$ZZ!
XM&L!03R`L@/J`K(#<+P!.NAK06$\O+(!`3KH:'%A/*T#__&<*2JW__&<$3KH`+
XM_DZZ$#I*0&<$3KH0;DZZ$$P(+```@)=G!$ZZ$%X(+``!@)=G#$ZZ`)Y";(`D2
XM0FR`(`@L``.`EV<$3KH(``@L``*`EV<62FR`(&8&3KH%9&`*2FR`)&<$3KH`+
XMPD)L@)9@`/]V3EU.=6EN='5I=&EO;BYL:6)R87)Y`&=R87!H:6-S+FQI8G)A8
XM<GD`;&%Y97)S+FQI8G)A<GD`4&]/<$AA3GD`:6YP=70N9&5V:6-E`%1I;5!O#
XM9&QE`'1I;65R+F1E=FEC90!.50``2FR`*&<J,"R`AM!L@'HY0("`,"R`B-!LW
XM@'PY0(""3KH`K"\L@+!.NAJ66$]";(`H3EU.=4Y5``!"K(#4*7P`#T)`@-A(4
XM;("T3KH98EA/3EU.=4Y5```@;("D,"@`$K!L@(9F#B!L@*0P*``0L&R`B&<\J
XM,"R`AM!L@'HY0("`,"R`B-!L@'PY0(""84`@;("D,"@`$M!L@'HY0("`(&R`>
XMI#`H`!#0;(!\.4"`@F$>.7P``8`H(&R`I#EH`!*`AB!L@*0Y:``0@(A.74YU<
XM3E4```QL``&`)&8$82Y@*`QL``*`)&8&3KH!(&`:#&P``X`D9@9.N@(48`P,/
XM;``$@"1F!$ZZ`PA.74YU3E4``$IL@(!L!E)L@(!@]$IL@()L!E)L@()@]#`LV
XM@)[0;("8(&R`I+!H``QO!E-L@)A@Z#`L@)S0;(":(&R`I+!H``YO!E-L@)I@L
XMZ#`L@)[0;("8D'P`*#(L@("R0&\0,"R`GM!L@)B0?``H.4"`@#`L@)S0;(":"
XMD'P`&#(L@(*R0&\0,"R`G-!L@)J0?``8.4"`@C\L@((_+("`3KKY6%A//RR`E
XM@C`L@)[0;("84T`_`$ZZ^6983S`L@)S0;(":4T`_`#`L@)[0;("84T`_`$ZZX
XM^4A83S`L@)S0;(":4T`_`#\L@(!.NODR6$\_+(""/RR`@$ZZ^2183TY=3G5.M
XM50``(&R`I#`L@("P:``,;P93;("`8.Q*;("`;`92;("`8/1*;("";`92;(""I
XM8/0@;("D,"R`@K!H``YO!E-L@()@[#`L@)S0;(":(&R`I+!H``YO!E-L@)I@<
XMZ#`L@)[0?``H,BR`@+)`;`PP+(">T'P`*#E`@(`P+("<T&R`FI!\`!@R+(""7
XMLD!O$#`L@)S0;(":D'P`&#E`@((_+("","R`@%-`/P!.NOA.6$\_+(""/RR`&
XMGDZZ^&183S`L@)S0;(":4T`_`#\L@)Y.NOA.6$\P+("<T&R`FE-`/P`P+("`#
XM4T`_`$ZZ^#183S\L@((P+("`4T`_`$ZZ^")83TY=3G5.50``2FR`@&P&4FR`(
XM@&#T(&R`I#`L@("P:``,;P93;("`8.Q*;("";`92;(""8/0@;("D,"R`@K!HH
XM``YO!E-L@()@[#`L@)[0;("8(&R`I+!H``QO!E-L@)A@Z#`L@)[0;("8D'P`@
XM*#(L@("R0&\0,"R`GM!L@)B0?``H.4"`@#`L@)S0?``8,BR`@K)`;`PP+("<0
XMT'P`&#E`@((P+(""4T`_`#\L@(!.NO=,6$\P+(""4T`_`#`L@)[0;("84T`_\
XM`$ZZ]U983S\L@)PP+(">T&R`F%-`/P!.NO=`6$\_+("</RR`@$ZZ]S)83S`LO
XM@()30#\`/RR`@$ZZ]R!83TY=3G5.50``2FR`@&P&4FR`@&#T(&R`I#`L@("P,
XM:``,;P93;("`8.Q*;("";`92;(""8/0@;("D,"R`@K!H``YO!E-L@()@[#`L$
XM@)[0?``H,BR`@+)`;`PP+(">T'P`*#E`@(`P+("<T'P`&#(L@(*R0&P,,"R`#
XMG-!\`!@Y0("","R`@E-`/P`P+("`4T`_`$ZZ]F983S\L@)PP+("`4T`_`$ZZA
XM]GA83S\L@)P_+(">3KKV:EA/,"R`@E-`/P`_+(">3KKV6%A/,"R`@E-`/P`P*
XM+("`4T`_`$ZZ]D)83TY=3G5.50``(&R`2"EH`#2`J$JL@*AG``)R(&R`J#EH%
XM``2`GB!L@*@Y:``&@)P@;("H.6@`"("8(&R`J#EH``J`FB!L@*@I:``N@*0@^
XM;("D.6@`#("@(&R`I#EH``Z`HB!L@*31_````%0I2("L2'@``2\L@*Q.NA3*Z
XM4$](>``"+RR`K$ZZ%,Q03TAX``(O+("L3KH4SE!/(&R`I#EH`!*`BCEH`!*`A
XMCCEH`!*`AB!L@*0Y:``0@(PY:``0@)`Y:``0@(A";(`D,"R`C+!L@)QM``"6C
XM,"R`G%!`,BR`C+)`;```AC`L@(JP;(">;3`P+(">T'P`$#(L@(JR0&P@.7P`$
XM`8`D,"R`GI!L@(HY0(!Z,"R`G)!L@(PY0(!\8$8P+(">T&R`F#(L@(JR0&XV_
XM,"R`GM!L@)B0?``0,BR`BK)`;R(Y?``"@"0P+(">T&R`F)!L@(HY0(!Z,"R`3
XMG)!L@(PY0(!\8```L#`L@)S0;(":,BR`C+)`;@``GC`L@)S0;(":44`R+(",H
XMLD!O``"*,"R`BK!L@)YM-#`L@)[0?``0,BR`BK)`;"0Y?``#@"0P+(">D&R`^
XMBCE`@'HP+("<T&R`FI!L@(PY0(!\8$HP+(">T&R`F#(L@(JR0&XZ,"R`GM!LX
XM@)B0?``0,BR`BK)`;R8Y?``$@"0P+(">T&R`F)!L@(HY0(!Z,"R`G-!L@)J0E
XM;(",.4"`?$IL@"1G:B!L@*0Y:``2@(HY:``2@(8@;("D.6@`$(",.6@`$("(D
XM(&R`I-'\````X"E(@+`O+("P3KH3?EA/,"R`AM!L@'HY0("`.4"`CC`L@(C05
XM;(!\.4"`@CE`@)!.NOER.7P``8`@.7P``8`H8`1";(`@3EU.=4Y5``!.NA&<+
XM3KH15DZZ^'PY;("`@)(Y;(""@)0P+("2D&R`CCE`@(!*;("`;`1$;("`,"R``
XME)!L@)`Y0(""2FR`@FP$1&R`@@QL``&`)&8``B8P+("2L&R`CFU^,"R`E+!LO
XM@)!M=#`L@)[0;("8D'P`*#(L@("R0&\&4VR`@&#F,"R`G-!L@)J0?``8,BR`-
XM@K)`;P93;(""8.8P+(""2,!$@"\`,"R`@$C`1(`O`"\L@*A.NA)Z3^\`##`L=
XM@()(P"\`,"R`@$C`+P`O+("H3KH23$_O``Q@``&:,"R`DK!L@(YN;C`L@)2P.
XM;("0;F0P+(">D&R`@$I`;`93;("`8.XP+("<D&R`@DI`;`93;(""8.XP+(""L
XM2,!$@"\`,"R`@$C`1(`O`"\L@*A.NA'P3^\`##`L@()(P"\`,"R`@$C`+P`O_
XM+("H3KH1YD_O``Q@``$B,"R`DK!L@(YM``"(,"R`E+!L@)!N?#`L@)[0;("8!
XMD'P`*#(L@("R0&\&4VR`@&#F,"R`G)!L@()*0&P&4VR`@F#N0J<P+("`2,!$0
XM@"\`+RR`J$ZZ$8A/[P`,,"R`@DC`1(`O`#`L@(!(P"\`+RR`J$ZZ$5A/[P`,'
XM,"R`@DC`+P!"IR\L@*A.NA%43^\`#&```)`P+("2L&R`CFX``(0P+("4L&R`^
XMD&UX,"R`G-!L@)J0?``8,BR`@K)`;P93;(""8.8P+(">D&R`@$I`;`93;("`F
XM8.XP+(""2,!$@"\`0J<O+("H3KH0]D_O``PP+(""2,`O`#`L@(!(P$2`+P`O&
XM+("H3KH0QD_O``Q"IS`L@(!(P"\`+RR`J$ZZ$,)/[P`,8``%>@QL``*`)&8`"
XM`<0P+("2L&R`CFUX,"R`E+!L@)!M;C`L@)S0;(":D'P`&#(L@(*R0&\&4VR`Q
XM@F#F,"R`@-!L@)[0;("8(&R`I+!H``QO!E-L@(!@Y#`L@()(P$2`+P`P+("`3
XM2,`O`"\L@*A.NA!,3^\`##`L@()(P"\`0J<O+("H3KH0)$_O``Q@``$^,"R`J
XMDK!L@(YN5C`L@)2P;("0;DPP+("<D&R`@DI`;`93;(""8.XP+(""2,!$@"\`P
XM0J<O+("H3KH/XD_O``PP+(""2,`O`#`L@(!(P$2`+P`O+("H3KH/UD_O``Q@U
XM``#>,"R`DK!L@(YM;C`L@)2P;("0;F0P+(">T&R`F-!L@(`@;("DL&@`#&\&2
XM4VR`@&#D,"R`G)!L@()*0&P&4VR`@F#N,"R`@DC`1(`O`$*G+RR`J$ZZ#V9/5
XM[P`,,"R`@DC`+P`P+("`2,`O`"\L@*A.N@]<3^\`#&!D,"R`DK!L@(YN6C`LC
XM@)2P;("0;5`P+("<T&R`FI!\`!@R+(""LD!O!E-L@()@YC`L@()(P$2`+P`P&
XM+("`2,!$@"\`+RR`J$ZZ#PQ/[P`,,"R`@DC`+P!"IR\L@*A.N@[D3^\`#&``\
XM`ZX,;``#@"1F``'T,"R`DK!L@(YM>#`L@)2P;("0;6XP+(">T&R`F)!\`"@R3
XM+("`LD!O!E-L@(!@YC`L@)S0;(""T&R`FB!L@*2P:``.;P93;(""8.0P+(""2
XM2,`O`#`L@(!(P$2`+P`O+("H3KH.@$_O``Q"IS`L@(!(P"\`+RR`J$ZZ#EA/M
XM[P`,8``!;C`L@)*P;(".;FXP+("4L&R`D&YD,"R`GI!L@(!*0&P&4VR`@&#NK
XM,"R`G-!L@)J0;(""L'P`&&P&4VR`@F#H0J<P+("`2,!$@"\`+RR`J$ZZ#?Y/P
XM[P`,,"R`@DC`1(`O`#`L@(!(P"\`+RR`J$ZZ#?)/[P`,8```]C`L@)*P;(".I
XM;70P+("4L&R`D&YJ,"R`G-!L@)J0;(""L'P`&&P&4VR`@F#H,"R`GM!L@)B0^
XM?``H,BR`@+)`;P93;("`8.8P+(""2,!$@"\`,"R`@$C`1(`O`"\L@*A.N@V(^
XM3^\`#$*G,"R`@$C`+P`O+("H3KH-8$_O``Q@=C`L@)*P;(".;FPP+("4L&R`<
XMD&UB,"R`GI!L@(!*0&P&4VR`@&#N,"R`G-!L@(+0;(":(&R`I+!H``YO!E-LT
XM@()@Y$*G,"R`@$C`1(`O`"\L@*A.N@T$3^\`##`L@()(P"\`,"R`@$C`+P`O#
XM+("H3KH,^D_O``Q@``&R#&P`!(`D9@`!J#`L@)*P;(".;6(P+("4L&R`D&U8V
XM,"R`G-!L@(+0;(":(&R`I+!H``YO!E-L@()@Y#`L@(#0;(">T&R`F"!L@*2P&
XM:``,;P93;("`8.0P+(""2,`O`#`L@(!(P"\`+RR`J$ZZ#(1/[P`,8``!/#`LR
XM@)*P;(".;F`P+("4L&R`D&Y6,"R`GM!L@)B0?``H,BR`@+)`;P93;("`8.8PF
XM+("<T&R`FI!L@(*P?``8;`93;(""8.@P+(""2,!$@"\`,"R`@$C`1(`O`"\LF
XM@*A.N@P:3^\`#&```-(P+("2L&R`CFU>,"R`E+!L@)!N5#`L@)[0;("8T&R`=
XM@"!L@*2P:``,;P93;("`8.0P+("<T&R`FI!L@(*P?``8;`93;(""8.@P+(""U
XM2,!$@"\`,"R`@$C`+P`O+("H3KH+L$_O``Q@:#`L@)*P;(".;EXP+("4L&R`6
XMD&U4,"R`GM!L@)B0?``H,BR`@+)`;P93;("`8.8P+("<T&R`@M!L@)H@;("D9
XML&@`#F\&4VR`@F#D,"R`@DC`+P`P+("`2,!$@"\`+RR`J$ZZ"T9/[P`,3KH)#
XMCDZZ"B9";(`D0FR`($Y=3G5.50``0J="ITZZ"CI03P@```QG!G`!3EU.=7``$
XM8/A.50``2'@0`$*G3KH*&E!/3EU.=4Y5``!P`$Y=3G5.50``2FR`9&8``+)*-
XMK(`\9S0@;(`\,7P`"@`<0>R`_B)L@#PC2``H+RR`/$ZZ"/Q83R\L@#Q.N@<J`
XM6$\O+(`\3KH(/%A/2JR`.&<*+RR`.$ZZ![A83PRL_____X!8;PHO+(!83KH):
XM'EA/2JR`5&842&R`M$ZZ!LA83TAL@+1.N@;B6$]*K(!`9PHO+(!`3KH'>EA/?
XM2JR!%&<B(&R!%$JH``IG"B\L@11.N@DZ6$](>``B+RR!%$ZZ"+A03TJL@$AGB
XM"B\L@$A.N@:F6$]*K(!,9PHO+(!,3KH&EEA/2JR`4&<*+RR`4$ZZ!H983T*GS
XM3KH$@EA/3EU.=6%P0^R`<D7L@'*UR68.,CP`/&L(=``BPE')__PI3X$8+'@`I
XM!"E.@1Q(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS0_H`($ZN_F@I0($@W
XM9@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R87)Y`$GY``!__DYU3E4`K
XM`"\*2'D``0``,"R`9L'\``8O`$ZZ!XHI0($D4$]F%$*G2'D``0``3KH%K%!/R
XM+FR!&$YU(&R!)$)H``0@;($D,7P``0`0(&R!)#%\``$`"B!L@1@@+($8D*@`O
XM!%"`*4"!*"!L@2@@O$U!3EA"ITZZ!W0D0$JJ`*Q83V<N+RT`#"\M``@O"DZZD
XM`*XY?``!@2P@;($D`&B````$(&R!)`!H@```"D_O``Q@0DAJ`%Q.N@@B2&H`O
XM7$ZZ!V@I0($N(&R!+DJH`"103V<0(&R!+B)H`"0O$4ZZ!+I83R\L@2XO"DZZS
XM`F@I;($N@3)03TZZ!*X@;($D((!.N@2Z(&R!)"%```9G%DAX`^U(>@`J3KH$.
XMEB!L@20A0``,4$\O+($R/RR!-DZZZL)"9TZZ`M103R1?3EU.=2H`3E4``$CG*
XM##`D;0`0(&T`"$JH`*QG&"!M``@@*`"LY8`H`"!$("@`$.6`)D!@!"9L@&@0:
XM$TB`2,#0K0`,5(`Y0($X0J<P+($X2,`O`$ZZ!API0($Z4$]F"$S?##!.74YU7
XM$!-(@#H`/P4@2U*(+P@O+($Z3KH!?C`%2,`@0-'L@3I#^@%$$-EF_#\M``XO-
XM"B\L@3I.N@$Z(&R!.D(P4``Y?``!@38P!4C`T*R!.B9`4HLD2T_O`!00$TB`\
XM.@"P?``@9QBZ?``)9Q*Z?``,9PRZ?``-9P:Z?``*9@12BV#8#!,`(&UZ#!,`F
XM(F8N4HL@2U*+$!!(@#H`9QX@2E**$(6Z?``B9A`,$P`B9@12BV`&0BK__V`"E
XM8-9@."!+4HL0$$B`.@!G)KI\`"!G(+I\``EG&KI\``QG%+I\``UG#KI\``IG^
XM""!*4HH0A6#.($I2BD(02D5F`E.+4FR!-F``_UI"$D*G,"R!-E)`2,#E@"\`J
XM3KH$^BE`@3)03V8(0FR!-F``_MAZ`"9L@3I@)#`%2,#E@"!L@3(ABP@`($L@U
XM"$H89OR1P%.(,`A20$C`U\!21;IL@39MUC`%2,#E@"!L@3)"L`@`8`#^E"``%
XM,#Q__V`$,"\`#"!O``1*&&;\4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU3.\#I
XM```$(`@R+P`,8`(0V5?)__QG!E)!8`)"&%')__Q.=4Y5``!(YPXP)&T`"$*GE
XM2'H`CDZZ!/HI0($^4$]F"$S?#'!.74YU(&T`#")H`"0O*0`$3KH%X"@`6$]GF
XM4DAZ`&T@1"\H`#9.N@6R)D!*@%!/9S1(>`/M+PM.N@(`+`!03V<D(`;E@"H`:
XM($4E:``(`*0E1@"<2'@#[4AZ`#A.N@'<)4``H%!/+P1.N@5^6$\O+($^3KH"A
XM'$*L@3Y83V"`:6-O;BYL:6)R87)Y`%=)3D1/5P`J`$Y5``!*K(%"9P8@;(%"V
XM3I`_+0`(3KH`"%1/3EU.=4Y5__PO!#`M``A(P"M`__Q*K($D9RAX`&`*/P1.T
XMN@#^5$]21+AL@&9M\#`L@&;!_``&+P`O+($D3KH#JE!/2JR!1F<&(&R!1DZ0[
XM2JR`;&<*+RR`;$ZZ`4A83TJL@4IG""!L@4H@K(%.2JR!4F<*+RR!4DZZ`6Y8K
XM3TJL@59G"B\L@59.N@%>6$]*K(%:9PHO+(%:3KH!3EA/2JR!7F<*+RR!7DZZ+
XM`3Y83RQX``0(+@`$`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR!+F8P2JR!R
XM.F<H,"R!.$C`+P`O+($Z3KH#`C`L@3920$C`Y8`O`"\L@3).N@+N3^\`$&`.[
XM3KH"V"\L@2Y.N@-86$\@+?_\+FR!&$YU*!].74YU3E4``$CG#B`X+0`(,`3!+
XM_``&)$#5[($D2D1M"KAL@&9L!$J29A`Y?``"@6)P_TS?!'!.74YU""H`!P`$P
XM9@@O$DZZ``I83T*2<`!@XB(O``0L;($@3N[_W"(O``0L;($@3N[_@BQL@2!.E
XM[O_*3.\`!@`$+&R!($[N_^(L;($@3N[_Q$[Z``(B+P`$+&R!($[N_Z8B;P`$8
XM+&R!'$[N_B!(YP$$3.\@@``,+&R!'$ZN_Y1,WR"`3G4B;P`$+&R!'$[N_CY.,
XM^@`"(F\`!"QL@1Q.[OYB3E4``$CG""!(>/__3KH`T"@`L+S_____6$]F"G``)
XM3-\$$$Y=3G5(>0`!``%(>``B3KH!8"1`2H!03V8,+P1.N@'&<`!83V#6)6T`;
XM"``*%6T`#P`)%7P`!``(0BH`#A5$``]"ITZZ`7`E0``02JT`"%A/9PHO"DZZ:
XM`%I83V`*2&H`%$ZZ`9Y83R`*8)).50``+PHD;0`(2JH`"F<(+PI.N@'&6$\5!
XM?`#_``@E?/____\`%'``$"H`#R\`3KH!2DAX`"(O"DZZ`2Q/[P`,)%].74YUZ
XM(F\`!"QL@1Q.[OZ>("\`!"QL@1Q.[OZV3E4``$AX`#`O+0`(3KH`&E!/3EU.+
XM=4Y5```O+0`(3KH`3%A/3EU.=4Y5```O"DJM``AF"'``)%].74YU2'D``0`!2
XM+RT`#$ZZ`&`D0$J`4$]F!'``8.`5?``%``@U;0`.`!(E;0`(``X@"F#*3E4`V
XM`"\*)&T`""`*9@8D7TY=3G45?`#_``@E?/____\`%"5\_____P`8<``P*@`2S
XM+P`O"DZZ`&903V#23OH``DSO``,`!"QL@1Q.[O\Z+&R!'$[N_XA(YP,`(F\`8
XM#"QL@1Q.KOXX3-\`P$YU+&R!'$[N_X(B;P`$+&R!'$[N_GI.^@`"(F\`!"QL(
XM@1Q.[O[:3OH``BQL@1Q.[O]\3OH``B)O``0@+P`(+&R!'$[N_RX@+P`$+&R!G
XM'$[N_K!.^@`"(&\`!"QL@1Q.[OZ,(&\`!""(6)!"J``$(4@`"$YU(&\`!$SOQ
XM`@$`""(O`!`L;($<3N[^1$[Z``(L;($<(F\`!"`O``A.[OW8+&R!'$[N_W8BC
XM;P`$+&R!'$[N_I@B;P`$+&R!'$[N_H8B;P`$+&R!'$[N_C).^@`"3.\``P`$&
XM+&R!'$[N_LXB;P`$("\`""QL@1Q.[O[4(F\`!"`O``@L;($<3N[^O"`O``0L"
XM;($<3N[^PB!O``0L;($<3N[^@")O``1,[P`#``@L;(!,3N[_"B)O``1,[P`#>
XM``@L;(!,3N[_$")O``0@+P`(+&R`3$[N_JHB;P`$("\`""QL@$Q.[OZD(F\`J
XM!"`O``@L;(!,3N[^GB)O``1,[P`#``@L;(!,3N[^O$SO`P``!"QL@3Y.[O^@`
XM(&\`!"QL@3Y.[O^F(&\`!"QL@3Y.[O^R(&\`!$SO``,`""QL@$A.[O]8(&\`]
XM!$SO``,`""QL@$A.[O[@(&\`!"QL@%!.[O^4(&\`!"QL@%!.[O^.```#[```!
XM``$````!```6(@````````/R```#Z@```!Q095!E5&4`2VAA;&5D($UA<F1AI
XM;2U"97D@,3DX.0``````````````````````````````````````````````U
XM`````````````````````````````?____]7:4YN67!/`````!0`````````E
X3```````#\@```^L````!```#\@``9
X``
Xend
Xsize 8344
SHAR_EOF
echo "End of archive 1 (of 1)"
# if you want to concatenate archives, remove anything after this line
exit